home *** CD-ROM | disk | FTP | other *** search
- #include <iff.h>
- #include <graphics/view.h>
- #include <stdio.h>
-
-
- const char amiga_version[] = "\0$VER: dumpBMHD 1.0";
-
-
- const char *maskmode[] = { "None", "HasMask", "HasTransparentColor", "Lasso" };
- const char *cprmode[] = { "None", "ByteRun1" };
- #define UNKNOWN (const char *)"Unknown"
- #define MASKTABSZ sizeof(maskmode)/sizeof(const char *)
- #define CPRTABSZ sizeof(cprmode)/sizeof(const char *)
-
- const struct vmodestruct {
- USHORT mode;
- const char *name;
- } viewmode[] = {
- { GENLOCK_VIDEO , "GENLOCK_VIDEO" },
- { LACE , "LACE" },
- { DOUBLESCAN , "DOUBLESCAN" },
- { SUPERHIRES , "SUPERHIRES" },
- { PFBA , "PFBA" },
- { EXTRA_HALFBRITE, "EXTRA_HALFBRITE" },
- { GENLOCK_AUDIO , "GENLOCK_AUDIO" },
- { DUALPF , "DUALPF" },
- { HAM , "HAM" },
- { EXTENDED_MODE , "EXTENDED_MODE" },
- { VP_HIDE , "VP_HIDE" },
- { SPRITES , "SPRITES" },
- { HIRES , "HIRES" }
- };
- #define VMTABSZ sizeof(viewmode)/sizeof(struct vmodestruct)
-
-
- void dumpBMHD(filename)
- char *filename;
- {
- IFFL_HANDLE ifh;
- struct IFFL_BMHD *bmhd;
- ULONG *camg;
-
- if( ifh = IFFL_OpenIFF(filename, IFFL_MODE_READ) ) {
-
- printf("\nFile: %s\n\n", filename);
-
- if( bmhd = IFFL_GetBMHD(ifh) ) {
- int x;
-
- printf("width: %d height: %d\n", bmhd->w, bmhd->h);
- printf("pixel position x: %d y: %d\n", bmhd->x, bmhd->y);
- printf("planes: %d\n", bmhd->nPlanes);
-
- x = bmhd->masking;
- printf("masking: %s (%d)\n", x < MASKTABSZ ? maskmode[x] : UNKNOWN, x);
- x = bmhd->compression;
- printf("compression: %s (%d)\n", x < CPRTABSZ ? cprmode[x] : UNKNOWN, x);
-
- printf("transparent color: %d\n", bmhd->transparentColor);
- printf("xAspect: %d yAspect: %d\n", bmhd->xAspect, bmhd->yAspect);
- printf("pageWidth: %d pageHeight: %d\n", bmhd->pageWidth, bmhd->pageHeight);
- }
- else
- printf("no BMHD chunk found\n");
-
- if( camg = IFFL_FindChunk(ifh, ID_CAMG) ) {
- camg++;
- if( *camg == 4 ) {
- ULONG id;
- id = *++camg & 0x0000ffff;
- int i;
-
- printf("\nViewModes (lower word): 0x%04lx =", id);
-
- for( i = 0; i < VMTABSZ; i++ ) {
- if( id & viewmode[i].mode ) {
- printf(" %s", viewmode[i].name);
- id &= ~viewmode[i].mode;
- }
- }
- if( id )
- printf(" 0x%04lx\n", id);
- printf("\n");
-
- id = (*camg & 0xffff0000) >> 16;
- printf("ViewModes (upper word): 0x%04lx\n", id);
- }
- else
- printf("\nError reading CAMG chunk: chunksize %d ??\n", *camg);
- }
- else
- printf("\nno CAMG chunk found\n");
-
- IFFL_CloseIFF(ifh);
- }
- else
- printf("\ncannot open %s\n", filename);
-
- printf("\n\n");
- }
-
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- int i;
-
- if( argc > 1) {
- for( i = 1; i < argc; i++ ) {
- dumpBMHD(argv[i]);
- }
- }
- else
- printf("usage: %s <ilbm-files>\n", argv[0]);
- }
-
-